<?php

namespace App\Http\Controllers\Sys_api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Config;
use Yansongda\Pay\Pay;
use Yansongda\Pay\Log;


class WxPayAPIController extends BaseAPIController
{

    public function GetWxPara()
    {
        $options = Config::get("easywechat");
        $config = [
            'wechat' => [
                'default' => [
                    // 必填-商户号
                    'mch_id' =>  $options["pay"]["default"]["mch_id"],
                    // 选填-v2商户私钥
                    'mch_secret_key_v2' =>  $options["pay"]["default"]["v2_secret_key"],
                    // 必填-v3商户秘钥
                    'mch_secret_key' => '',
                    // 必填-商户私钥 字符串或路径
                    'mch_secret_cert' => $options["pay"]["default"]["private_key"],
                    // 必填-商户公钥证书路径
                    'mch_public_cert_path' => $options["pay"]["default"]["certificate"],
                    // 必填
                    'notify_url' => $options["pay"]["default"]["notify_url"],
                    // 选填-公众号 的 app_id
                    'mp_app_id' => '',
                    // 选填-小程序 的 app_id
                    'mini_app_id' =>  $options["mini_app"]["default"]["app_id"],
                    // 选填-app 的 app_id
                    'app_id' => '',
                    // 选填-服务商模式下，子公众号 的 app_id
                    'sub_mp_app_id' => '',
                    // 选填-服务商模式下，子 app 的 app_id
                    'sub_app_id' => '',
                    // 选填-服务商模式下，子小程序 的 app_id
                    'sub_mini_app_id' => '',
                    // 选填-服务商模式下，子商户id
                    'sub_mch_id' => '',
                    // 选填-微信平台公钥证书路径, optional，强烈建议 php-fpm 模式下配置此参数
                    'wechat_public_cert_path' => [
                        '45F59D4DABF31918AFCEC556D5D2C6E376675D57' => __DIR__ . '/Cert/wechatpay_45F***D57.pem',
                    ],
                    // 选填-默认为正常模式。可选为： MODE_NORMAL, MODE_SERVICE
                    'mode' => Pay::MODE_NORMAL,
                ]
            ],
            'logger' => [ // optional
                'enable' => false,
                'file' => '/logs/wechat.log',
                'level' => 'debug', // 建议生产环境等级调整为 info，开发环境为 debug
                'type' => 'single', // optional, 可选 daily.
                'max_file' => 30, // optional, 当 type 为 daily 时有效，默认 30 天
            ],
            'http' => [ // optional
                'timeout' => 5.0,
                'connect_timeout' => 5.0,
                // 更多配置项请参考 [Guzzle](https://guzzle-cn.readthedocs.io/zh_CN/latest/request-options.html)
            ],
        ];

        return $config;
    }



    /**
     * 用户充值
     *
     * @return void
     */
    public function RechargeAPI(Request $request)
    {
        $uid = $request->input('uid');
        $wxopenid = $request->input('wxopenid');
        $price = $request->input('price');
        $config = $this->GetWxPara();
        $out_trade_no = $this->getOrderId();

        $order = [
            'out_trade_no' => $out_trade_no,
            'description' => '支付测试',
            'amount' => [
                'total' => 1,
            ],
            'payer' => [
                'openid' => $wxopenid,
            ],
        ];
        $pay = Pay::wechat($config)->mini($order);
    }


    /**微信支付回调
     * 
     */
    public function WxPaySuccessNotify()
    {
        $config = $this->GetWxPara();
        $pay = Pay::wechat($config);

        try {
            $data = $pay->callback(); // 是的，验签就这么简单！
        } catch (\Exception $e) {
            echo($e->getMessage());
        }

        return $pay->success();
    }
}
